home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1993…ch: Other People's Memory / ADC Developer CD (1993-03) (''Other People's Memory'')_iso / Dev.CD Mar 93.iso / Development Platforms / CSMP Digests / csmp-v1-019.txt < prev    next >
Encoding:
Text File  |  1992-11-18  |  53.1 KB  |  1,548 lines  |  [TEXT/MPS ]

  1. C.S.M.P. Digest             Mon, 16 Mar 92       Volume 1 : Issue 19
  2.  
  3. Today's Topics:
  4.  
  5.     sfdefault MPW tool
  6.     Think C 5.0 Changes for Vol II Mac C Primer
  7.     Help: Corrupted Resource File
  8.     Building NCSA Telnet (2.4)
  9.      GWorld and 32 bit QuickDraw question
  10.     Finding out who I am on AppleTalk
  11.     MacApp vs. TCL (think pascal) pros and cons?
  12.     Accessing PC files from a Mac
  13.     HELP!! mistakenly trashed folder
  14.  
  15.  
  16. The Comp.Sys.Mac.Programmer Digest is moderated by Michael A. Kelly.
  17.  
  18. These digests are available (by using FTP, account anonymous, your email
  19. address as password) in the pub/mac/csmp-digest directory on ftp.cs.uoregon.
  20. edu (try skinner.cs.uoregon.edu if that doesn't work).  This is also the home
  21. of the comp.sys.mac.programmer Frequently Asked Questions list.
  22.  
  23. These digests are also available via email.  Just send a note saying that you
  24. want to be on the digest mailing list to mkelly@cs.uoregon.edu, and you will
  25. automatically receive each new digest as it is created.
  26.  
  27. The articles in these digests are taken directly from comp.sys.mac.programmer.
  28. They are not edited; all articles included in this digest are in their original
  29. posted form.  The only articles that are -not- included in these digests are
  30. those which didn't receive any replies (except those that give information
  31. rather than ask a question).  All replies to each article are concatenated
  32. onto the original article in the order in which they were received.  Article
  33. threads are not added to the digests until the last article added to the
  34. thread is at least one month old (this is to ensure that the thread is dead
  35. before adding it to the digests).
  36.  
  37. Send administrative mail to mkelly@cs.uoregon.edu.
  38.  
  39. -------------------------------------------------------
  40.  
  41. From: time@ice.com (Tim Endres)
  42. Subject: sfdefault MPW tool
  43. Date: 13 Feb 92 03:53:44 GMT
  44. Organization: ICE Engineering, Inc.
  45.  
  46.  
  47. Here is a stupid MPW tool trick. Feed this tool a path name and your
  48. next open via SFGetFile() will be pointed to that directory. Very
  49. nice for setting up context driven opens like "Open C Header..."
  50. or "Open Resource Header...".
  51.  
  52. usage: sfdefault pathname
  53.  
  54. tim.
  55. - ---------------
  56.  
  57.  
  58. #include <types.h>
  59. #include <standardfile.h>
  60. #include <stdio.h>
  61. #include <string.h>
  62.  
  63. #define FALSE            (Boolean)0
  64.  
  65. #define SFSaveDisk        (* (short *) 0x0214)
  66. #define CurDirStore        (* (long *)  0x0398)
  67.  
  68. main(int argc, char *argv[])
  69.     {
  70.     int                myerr;
  71.     long            dirID;
  72.     short            vRefNum;
  73.     char            pascal_name[256], *ptr;
  74.     WDPBRec            wpb;
  75.     CInfoPBRec        cpb;
  76.     HParamBlockRec    pb;
  77.     
  78.     if (argc > 1)
  79.         {
  80.         pascal_name[0] = '\0';
  81.         wpb.ioCompletion = 0;
  82.         wpb.ioNamePtr = pascal_name;
  83.         
  84.         myerr = PBHGetVol(&wpb, FALSE);
  85.         
  86.         if (myerr != noErr)
  87.             {
  88.             fprintf(stderr, "error #%d from PBHGetVol().\n", myerr);
  89.             exit(2);
  90.             }
  91.  
  92.         vRefNum = wpb.ioWDVRefNum;
  93.         dirID = wpb.ioWDDirID;
  94.         
  95.         if (argv[1][0] != ':')
  96.             {
  97.             ptr = strchr(argv[1], ':');
  98.             if (ptr != NULL)
  99.                 {
  100.                 /* Full path name, get it's vRefNum... */
  101.                 strncpy(&pascal_name[1], argv[1], (int)(ptr - argv[1])+1);
  102.                 pascal_name[0] = (ptr - argv[1])+1;
  103.                 
  104.                 pb.volumeParam.ioCompletion = 0;
  105.                 pb.volumeParam.ioNamePtr = pascal_name;
  106.                 pb.volumeParam.ioVRefNum = 0;
  107.                 pb.volumeParam.ioVolIndex = -1;
  108.                 
  109.                 myerr = PBHGetVInfo(&pb, FALSE);
  110.  
  111.                 if (myerr != noErr)
  112.                     {
  113.                     fprintf(stderr, "error #%d from PBHGetVInfo().\n", myerr);
  114.                     exit(2);
  115.                     }
  116.                 
  117.                 vRefNum = pb.volumeParam.ioVRefNum;
  118.                 }
  119.             }
  120.         
  121.         strcpy(pascal_name, argv[1]);
  122.         c2pstr(pascal_name);
  123.         
  124.         cpb.hFileInfo.ioCompletion = 0;                /* Synchronous */
  125.         cpb.hFileInfo.ioNamePtr = pascal_name;
  126.         cpb.hFileInfo.ioVRefNum = vRefNum;            /* Returned here */
  127.         cpb.hFileInfo.ioFDirIndex = 0;                /* Use ioDirID *and* ioNamePtr */
  128.         cpb.hFileInfo.ioDirID = 0;                    /* same offset as ioFlNum */
  129.         
  130.         myerr = PBGetCatInfo(&cpb, (Boolean)0);        /* Synchronous */
  131.         
  132.         if (myerr != noErr)
  133.             {
  134.             fprintf(stderr, "error #%d from PBGetCatInfo().\n", myerr);
  135.             exit(2);
  136.             }
  137.  
  138.         if ((cpb.hFileInfo.ioFlAttrib & ioDirMask) != 0)
  139.             {
  140.             dirID = cpb.dirInfo.ioDrDirID;
  141.             }
  142.         else
  143.             {
  144.             dirID = cpb.hFileInfo.ioFlParID;
  145.             }
  146.  
  147.         SFSetDefault(dirID, vRefNum);
  148.         }
  149.     
  150.     }
  151.  
  152.  
  153. SFSetDefault(dirid, vrefnum)
  154. long    dirid;
  155. short    vrefnum;
  156. {
  157.  
  158.     SFSaveDisk = vrefnum * -1;
  159.     CurDirStore = dirid;
  160.     }
  161.  
  162.  
  163. #ifdef NEVER_DEFINED
  164.  
  165. C -mbg full {active}
  166. Link -t MPST -c 'MPS '        6
  167.     -o sfdefault            6
  168.     {active}.o                6
  169.     {Libraries}Interface.o    6
  170.     {Libraries}RunTime.o    6
  171.     {CLibraries}StdCLib.o
  172. sfdefault Fire:
  173. sfdefault Sea:doc:
  174. sfdefault "Earth:System Folder:Control Panels:"
  175.  
  176. mv sfdefault {tools}
  177.  
  178. #endif
  179.  
  180.  
  181.  
  182. ---------------------------
  183.  
  184. From: J.Cook@ENS.Prime.COM (Jim Cook)
  185. Subject: Think C 5.0 Changes for Vol II Mac C Primer
  186. Date: 28 Jan 92 23:13:45 GMT
  187. Organization: Prime Computer, Inc.
  188.  
  189. Because someone asked, I'm also published the changes for Vol II of the
  190. Macintosh Programming Primer.  The primer was published based on Think 4.0.
  191. The following will allow you to run the programs under Think 5.0.
  192. Send any questions to the book's author - I'm just the messanger!
  193.  
  194. Jim
  195. <J.Cook@ENS.Prime.COM>
  196.  
  197. - -------------------------------------------------------------------------
  198.  
  199. Dear Mac C Primer (Volume II) reader,
  200.  
  201. With the introduction of a new version of THINK C (v5.0), you'll need to make
  202. some changes in your  source code to maintain compatibility:
  203.  
  204. cdev.c:
  205. 1) (p. 67) Insert line, just after the last #define:
  206.         short    FindFontNumber();
  207.  
  208. Tester.c:
  209. 1) (p. 95) Replace #define MOVE_TO_FRONT from
  210.         -1L
  211.     to
  212.         (WindowPtr)-1L
  213.  
  214. 2) (p. 97) Change BeginUpdate( gTheEvent.message ) to
  215.             BeginUpdate( (WindowPtr)gTheEvent.message )
  216.  
  217. 3) (p. 97) Change EndUpdate( gTheEvent.message ) to
  218.             EndUpdate( (WindowPtr)gTheEvent.message )
  219.  
  220. DLOG.c:
  221. 1) (p. 111) Replace #define MOVE_TO_FRONT from
  222.         -1L
  223.     to
  224.         (WindowPtr)-1L
  225.  
  226. ColorInfo.c:
  227. 1) (p. 136) Replace the line:
  228.         #include "ColorToolbox.h"
  229.     with
  230.         #include "Picker.h"
  231.  
  232. Palette.c:
  233. 1) (p. 153) Replace the line:
  234.         #include "ColorToolbox.h"
  235.     with the two lines:
  236.         #include "Palettes.h"
  237.         #include "Picker.h"
  238.         
  239. 2) (p. 153) Replace #define MOVE_TO_FRONT from
  240.         -1L
  241.     to
  242.         (WindowPtr)-1L
  243.  
  244. ColorTutor.c:
  245. 1) (p. 171) Replace the line:
  246.         #include "ColorToolbox.h"
  247.     with the two lines:
  248.         #include "Palettes.h"
  249.         #include "Picker.h"
  250.         
  251. 2) (p. 171) Replace #define MOVE_TO_FRONT from
  252.         -1L
  253.     to
  254.         (WindowPtr)-1L
  255.  
  256. GWorld.c:
  257. 1) (p. 203) Replace the two lines:
  258.         #include "ColorToolbox.h"
  259.         #include "QuickDraw32Bit.h"
  260.     with the two lines:
  261.         #include "Picker.h"
  262.         #include "QDOffscreen.h"
  263.         
  264. 2) (p. 203) Replace #define MOVE_TO_FRONT from
  265.         -1L
  266.     to
  267.         (WindowPtr)-1L
  268.         
  269. FormEdit.c:
  270. 1) (p. 244) Replace #define MOVE_TO_FRONT from
  271.         -1L
  272.     to
  273.         (WindowPtr)-1L
  274.         
  275. 2) (p. 251) In the function DoTEKey(), replace the line:
  276.         tempStr[ i+1 ] = (*text)[ i ];
  277.     with the line:
  278.         tempStr[ i+1 ] = (*(char **)text)[ i ];
  279.         
  280. 3) (p. 257) In the function HandleEditChoice(), replace the line:
  281.         tempStr[ i+1 ] = (*text)[ i ];
  282.     with the line:
  283.         tempStr[ i+1 ] = (*(char **)text)[ i ];
  284.         
  285. 4) (p. 266) In the function NewClikLoop(), replace the declaration:
  286.         int            amount;
  287.     with the line:
  288.         short            amount;
  289.  
  290. Starter. :
  291. 1) Make a copy of the "Starter Folder" found in the "TCL 1.1 Demos" folder in
  292. your "Development" folder.  Next, copy the following files from your old
  293. "MyStarter" folder into this new folder:
  294.         - CDragPane.c
  295.         - CDragPane.h
  296.         - CMouse.c
  297.         - CMouse.h
  298.         - CStarterDoc.c
  299.         - CStarterDoc.h
  300.         - CStarterPane.c
  301.         - CStarterPane.h
  302.         - Starter.c
  303.     You should be copying 9 files, replacing their counterparts in the new
  304.     folder.  Do NOT copy the files CStarterApp.c and CStarterApp.h!!!!!
  305.     Start up THINK C by double-clicking the file Starter.  in this new folder.
  306.  
  307. 2) Select Add... from the Source menu and add the files CDragPane.c and
  308. CMouse.c
  309. to the project.  Make sure you add the two files to the first segment in the
  310. project window.  To select the first segment, click on the file name
  311. CStarterApp.c (in the project window) before you select Add...
  312.     
  313. 3) Select Options... from the Edit menu.  
  314.     - Select "Language Settings" from the popup menu.
  315.     - Make sure that the "Language Extensions" check box is checked.
  316.     - Select the "THINK C + Objects" radio button.
  317.     - Make sure the "Strict Prototype Enforcement" check box is checked.
  318.     - Select the "Infer Prototypes" radio button.
  319.  
  320. 4) Edit each of the functions in the files CDragPane.c, CMouse.c, and
  321. CStarterPane.c.  Change each function's parameter declarations from the old
  322. style to the new style of parameter declaration.  Make sure you edit every
  323. single function!!!  Old style declarations look like this:
  324.         void CDragPane::DoClick( hitPt, modifierKeys, when )
  325.         Point        hitPt;
  326.         short        modifierKeys;
  327.         long        when;
  328.         {
  329.         }
  330.     New style declarations look like this:
  331.         void CDragPane::DoClick( Point hitPt, short modifierKeys, long when )
  332.         {
  333.         }
  334.  
  335. 5) (p. 348) In the file CDragPane.c, in the function IDragPane, change the
  336.    declaration:
  337.         Rect r;
  338.     to
  339.         LongRect r;
  340.         
  341. 6) (p. 349-350) Also in CDragPane.c, in the function DoClick, change the first
  342. five lines from:
  343.         Rect    r;
  344.         Rect    endLocation;
  345.         
  346.         r = frame;
  347.         EraseRect( &r );
  348.         
  349.         FrameToEnclR(&r);
  350.     to these eight lines:
  351.         Rect    r;
  352.         Rect    endLocation;
  353.         LongRect    longR;
  354.         
  355.         FrameToQDR( &frame, &r );
  356.         EraseRect( &r );
  357.         
  358.         QDToLongRect(&r,&longR);
  359.         FrameToEnclR(&longR);
  360.         LongToQDRect( &longR, &r );
  361.  
  362. 7) (p. 354) In the file CMouse.h, change the three lines:
  363.         void        BeginTracking( Point *startPt );
  364.         void        KeepTracking( Point *currPt, Point *prevPt, Point *startPt);
  365.         void        EndTracking( Point *currPt, Point *prevPt, Point *startPt);
  366.     to:
  367.         void        BeginTracking( struct LongPt *startPt );
  368.         void        KeepTracking( struct LongPt *currPt, struct LongPt *prevPt,
  369.                                     struct LongPt *startPt );
  370.         void        EndTracking( struct LongPt  *currPt, struct LongPt  *prevPt,
  371.                                     struct LongPt  *startPt );
  372.  
  373. 8) (p. 351) In the file CMouse.c, in the function IMouse(), change the
  374.    declaration:
  375.         Rect r;
  376.     to
  377.         LongRect r;
  378.  
  379. 9) (p. 351) Also in the file CMouse.c, in the function IMouse(), change:
  380.         theBounds = r;
  381.     to
  382.         LongToQDRect( &r, &theBounds );
  383.  
  384. 10) (p. 351) Also in the file CMouse.c, in the function BeginTracking(), change
  385.     the function declaration from:
  386.         void CMouse::BeginTracking( Point *startPt )
  387.     to
  388.         void CMouse::BeginTracking( struct LongPt *startPt )
  389.  
  390. 11) (p. 352-353) Also in the file CMouse.c, replace the function KeepTracking()
  391.     with the following:
  392.  
  393. void CMouse::KeepTracking( struct LongPt *currPt, struct LongPt *prevPt,
  394.                     struct LongPt *startPt )
  395. {
  396.     LongRect    r, f;
  397.     Rect        shortR;
  398.     long        curTicks;
  399.     LongPt        startPosit, newPosit, cp, pp;
  400.     RgnHandle    clipRgn;
  401.     
  402.     thePanorama->GetPosition( &startPosit );
  403.     
  404.     clipRgn = NewRgn();
  405.     
  406.     if ( thePanorama->AutoScroll( currPt )
  407.             || ! EqualLongPt( currPt, prevPt ) )
  408.     {
  409.         thePanorama->GetPosition( &newPosit );
  410.         
  411.         GetClip( clipRgn );
  412.         QDToLongRect( &((**clipRgn).rgnBBox), &r );
  413.         OffsetLongRect( &r, startPosit.h - newPosit.h,
  414.                 startPosit.v - newPosit.v );
  415.                 
  416.         thePanorama->GetFrame(&f);
  417.         PinInRect(&f, (LongPt *)(&(r.top)));
  418.         PinInRect(&f, (LongPt *)(&(r.bottom)));
  419.         
  420.         LongToQDRect( &r, &shortR );
  421.         ClipRect( &shortR );
  422.         
  423.         shortR = theLocation;    /* Erase old gray rect */
  424.         
  425.         curTicks = TickCount();
  426.         while ( curTicks == TickCount() ) ;
  427.         FrameRect( &shortR );
  428.         QDToLongRect( &shortR, &r );
  429.         
  430.         cp = *currPt;
  431.         pp = *prevPt;
  432.         QDToLongRect( &theBounds, &f );
  433.         PinInRect(&f, &cp);
  434.         PinInRect(&f, &pp);
  435.  
  436.         OffsetLongRect(&r, cp.h - pp.h, cp.v - pp.v);    
  437.             
  438.         SetClip( clipRgn );
  439.         
  440.         curTicks = TickCount();
  441.         while ( curTicks == TickCount() ) ;
  442.         
  443.         LongToQDRect( &r, &shortR );
  444.         FrameRect( &shortR );    /* Draw new gray rect */
  445.         theLocation = shortR;        /* update theLocation instance var */
  446.     }
  447.     DisposeRgn( clipRgn );
  448. }
  449.         
  450.         
  451. 12) (p. 353) Also in the file CMouse.c, Replace the declaration of the function
  452.     EndTracking() with:
  453.  
  454. void CMouse::EndTracking( struct LongPt  *currPt, struct LongPt  *prevPt,
  455.                     struct LongPt  *startPt )
  456.  
  457.  
  458. 13) Add these three lines to the list of include files in the file
  459.     CStarterDoc.c:
  460.         
  461. #include "TBUtilities.h"
  462. #include "CWindow.h"
  463. #include <Packages.h>
  464.  
  465. 14) In the file CStarterDoc.c, in the function OpenFile(), replace the line:
  466.         theError = theFile->Open(fsRdWrPerm);
  467.     with the line
  468.         theFile->Open(fsRdWrPerm);
  469.         
  470. 15) In the file CStarterDoc.c, in the function OpenFile(), comment
  471.     out each of the lines:
  472.         gApplication->RequestMemory(FALSE, TRUE);
  473.         theFile->ReadAll(&theData);
  474.     and
  475.         gApplication->RequestMemory(FALSE, FALSE);
  476.  
  477. 16) (p. 343) In the file CStarterDoc.c, in the function BuildWindow(), change
  478.     the line:
  479.         Rect            panFrame;
  480.     to
  481.         LongRect        panFrame;
  482.         
  483. 17) (p. 346) In the file CStarterPane.c, in the function DoDrag(), change the
  484.     declaration:
  485.         Rect        boundsRect;
  486.     to
  487.         LongRect        boundsRect;
  488.  
  489. 18) (p. 346) In the file CStarterPane.c, in the function DoDrag(), add the new
  490.     declaration:
  491.         LongPt        longP;
  492.         
  493. 19) (p. 346) In the file CStarterPane.c, in the function DoDrag(), change the
  494.     line:
  495.         TrackMouse( aMouseTask, p, &boundsRect );
  496.     to
  497.         QDToLongPt( p, &longP );
  498.         TrackMouse( aMouseTask, &longP, &boundsRect );
  499.  
  500. ShowINIT.c:
  501. 1) (p. 397) Delete the line:
  502.         #include <Color.h>
  503.  
  504.  
  505.  
  506.  
  507. ---------------------------
  508.  
  509. From: weinstoc@sei.cmu.edu (Chuck Weinstock)
  510. Subject: Help: Corrupted Resource File
  511. Date: 26 Jan 92 21:38:23 GMT
  512. Organization: Software Engineering Institute, Pittsburgh, PA
  513.  
  514. I want to record changes to menu selections in my program permanently
  515. (i.e. if the user checks an entry I want that entry checked the next
  516. time the program is launched).  I *thought* the way to do this would
  517. be to do a ChangedResource on the menu handle, and then a
  518. WriteResource.  When I do this, everything looks fine if I open the
  519. resource file using ResEdit.  But when I try to run my program again
  520. it gets an error at the call to GetMenu that reads the modified
  521. resource.
  522.  
  523. Any ideas?
  524.  
  525. -- 
  526. Chuck Weinstock                weinstock@sei.cmu.edu
  527. Software Engineering Institute        (412) 268-7719
  528. Carnegie Mellon University        (412) 268-5758 (Fax)
  529. Pittsburgh, PA 15213
  530.  
  531.  
  532.  
  533. - -------------------------
  534.  
  535. From: weinstoc@sei.cmu.edu (Chuck Weinstock)
  536. Subject:  Help: Corrupted Resource File
  537. Date: 27 Jan 92 14:42:34 GMT
  538. Organization: The Software Engineering Institute
  539.  
  540.  
  541. In article <38357@as0c.sei.cmu.edu>, I wrote:
  542.  
  543. |> I want to record changes to menu selections in my program permanently
  544. |> (i.e. if the user checks an entry I want that entry checked the next
  545. |> time the program is launched).  I *thought* the way to do this would
  546. |> be to do a ChangedResource on the menu handle, and then a
  547. |> WriteResource.  When I do this, everything looks fine if I open the
  548. |> resource file using ResEdit.  But when I try to run my program again
  549. |> it gets an error at the call to GetMenu that reads the modified
  550. |> resource.
  551. |> 
  552. |> Any ideas?
  553. |> 
  554.  
  555. No one knew why the file was corrupted, but several suggested that I
  556. create my own resource to keep status.  It was also pointed out that
  557. the "correct" way to keep status is to create a preferences file for
  558. that purpose.
  559.  
  560. Thanks to all who responded.
  561.  
  562.  
  563.  
  564. Chuck Weinstock                weinstock@sei.cmu.edu
  565. Software Engineering Institute        (412) 268-7719
  566. Carnegie Mellon University        (412) 268-5758 (Fax)
  567. Pittsburgh, PA 15213
  568.  
  569.  
  570.  
  571. - -------------------------
  572.  
  573. From: russotto@eng.umd.edu (Matthew T. Russotto)
  574. Subject:  Help: Corrupted Resource File
  575. Date: 27 Jan 92 15:39:03 GMT
  576. Organization: University of Maryland, College Park, College of Engineering
  577.  
  578. In article <38357@as0c.sei.cmu.edu> weinstoc@sei.cmu.edu (Chuck Weinstock) writes:
  579. >I want to record changes to menu selections in my program permanently
  580. >(i.e. if the user checks an entry I want that entry checked the next
  581. >time the program is launched).  I *thought* the way to do this would
  582. >be to do a ChangedResource on the menu handle, and then a
  583. >WriteResource.  When I do this, everything looks fine if I open the
  584. >resource file using ResEdit.  But when I try to run my program again
  585. >it gets an error at the call to GetMenu that reads the modified
  586. >resource.
  587.  
  588. Certain info in the MENU resource is changed when you call GetMenu-- if you
  589. do what you described, you trash the MDEF ID.
  590.  
  591.  
  592.  
  593. -- 
  594. Matthew T. Russotto    russotto@eng.umd.edu    russotto@wam.umd.edu
  595. Your superior intellect is no match for our puny weapons! -- The Simpsons
  596. Just say NO to police searches and seizures.  Make them use force.
  597. (not responsible for bodily harm resulting from following above advice)
  598.  
  599.  
  600.  
  601. - -------------------------
  602.  
  603. From: lsr@Apple.COM (Larry Rosenstein)
  604. Subject:  Help: Corrupted Resource File
  605. Date: 29 Jan 92 02:39:12 GMT
  606. Organization: Object Based Systems, Apple Computer, Inc.
  607.  
  608. In article <38363@as0c.sei.cmu.edu> weinstoc@sei.cmu.edu (Chuck Weinstock) writes:
  609. >
  610. >In article <38357@as0c.sei.cmu.edu>, I wrote:
  611. >
  612. >|> I want to record changes to menu selections in my program permanently
  613. >|> (i.e. if the user checks an entry I want that entry checked the next
  614. >|> time the program is launched).  I *thought* the way to do this would
  615. >|> be to do a ChangedResource on the menu handle, and then a
  616. >|> WriteResource.  When I do this, everything looks fine if I open the
  617. >
  618. >No one knew why the file was corrupted, but several suggested that I
  619.  
  620. (I replied by E-Mail, but since no one else seemed to know why, I'm posting
  621. as well.)
  622.  
  623. The reason is that the original MENU resource contains the defproc ID, but
  624. this gets replaced with the defproc *handle* when GetMenu is called.  If you
  625. just do a ChangedResource you will be writing out the defproc handle,
  626. instead of the ID.
  627.  
  628. Before writing out the changed MENU you need to restore the ID.  (And then
  629. restore the handle if the menu is still going to be used.)
  630.  
  631. >create my own resource to keep status.  It was also pointed out that
  632. >the "correct" way to keep status is to create a preferences file for
  633.  
  634. You should use a separate preferences file instead of modifying the original
  635. application.  But you could still keep the status in a MENU resource.
  636.  
  637. -- 
  638. Larry Rosenstein, Apple Computer, Inc.
  639.  
  640. lsr@apple.com
  641. (or AppleLink: Rosenstein1)
  642.  
  643.  
  644.  
  645. - -------------------------
  646.  
  647. From: lsr@Apple.COM (Larry Rosenstein)
  648. Subject:  Help: Corrupted Resource File
  649. Date: 29 Jan 92 02:39:12 GMT
  650. Organization: Object Based Systems, Apple Computer, Inc.
  651.  
  652. In article <38363@as0c.sei.cmu.edu> weinstoc@sei.cmu.edu (Chuck Weinstock) writes:
  653. >
  654. >In article <38357@as0c.sei.cmu.edu>, I wrote:
  655. >
  656. >|> I want to record changes to menu selections in my program permanently
  657. >|> (i.e. if the user checks an entry I want that entry checked the next
  658. >|> time the program is launched).  I *thought* the way to do this would
  659. >|> be to do a ChangedResource on the menu handle, and then a
  660. >|> WriteResource.  When I do this, everything looks fine if I open the
  661. >
  662. >No one knew why the file was corrupted, but several suggested that I
  663.  
  664. (I replied by E-Mail, but since no one else seemed to know why, I'm posting
  665. as well.)
  666.  
  667. The reason is that the original MENU resource contains the defproc ID, but
  668. this gets replaced with the defproc *handle* when GetMenu is called.  If you
  669. just do a ChangedResource you will be writing out the defproc handle,
  670. instead of the ID.
  671.  
  672. Before writing out the changed MENU you need to restore the ID.  (And then
  673. restore the handle if the menu is still going to be used.)
  674.  
  675. >create my own resource to keep status.  It was also pointed out that
  676. >the "correct" way to keep status is to create a preferences file for
  677.  
  678. You should use a separate preferences file instead of modifying the original
  679. application.  But you could still keep the status in a MENU resource.
  680.  
  681. -- 
  682. Larry Rosenstein, Apple Computer, Inc.
  683.  
  684. lsr@apple.com
  685. (or AppleLink: Rosenstein1)
  686.  
  687.  
  688.  
  689. ---------------------------
  690.  
  691. From: bj@steele.ohsu.edu (Bill Jackson)
  692. Subject: Building NCSA Telnet (2.4)
  693. Date: 28 Jan 92 20:49:29 GMT
  694. Organization: Oregon Health Sciences University
  695.  
  696. I am attempting to build the NCSA Telnet product so I can add a local
  697. modification(s) to it.  Being a complete neophite to the Mac development
  698. environment, I am trying to ascertain what tools I need to do this.  Is ther
  699. a specific compiler/loader I need?  I do not see any instructions in the source
  700. package I downloaded, maybe they assume people at this level know what they
  701. are doing!  I see MPW mentioned - is that all I need>  If so, a specific
  702. release, or what?
  703.  
  704. Any help appreciated.
  705.  
  706. -- 
  707. - -
  708. William Jackson                     Manager, Network Services, Gaines Hall #113
  709. Oregon Health Sciences University (OHSU), 840 SW Gaines Road, Portland,OR 97201
  710. (503) 494 4535          Internet: bj@ohsu.edu     AT&T Mail: attmail!ohsu3b2!bj
  711.  
  712.  
  713.  
  714. - -------------------------
  715.  
  716. From: haney@moonshine.llnl.gov (Scott W. Haney)
  717. Subject:  Building NCSA Telnet (2.4)
  718. Date: 29 Jan 92 01:47:06 GMT
  719.  
  720. bj@steele.ohsu.edu (Bill Jackson) writes:
  721.  
  722. >I am attempting to build the NCSA Telnet product so I can add a local
  723. >modification(s) to it.  Being a complete neophite to the Mac development
  724. >environment, I am trying to ascertain what tools I need to do this.  Is ther
  725. >a specific compiler/loader I need?  I do not see any instructions in the source
  726. >package I downloaded, maybe they assume people at this level know what they
  727. >are doing!  I see MPW mentioned - is that all I need>  If so, a specific
  728. >release, or what?
  729.  
  730. >Any help appreciated.
  731.  
  732. >-- 
  733. >---
  734. >William Jackson                     Manager, Network Services, Gaines Hall #113
  735. >Oregon Health Sciences University (OHSU), 840 SW Gaines Road, Portland,OR 97201
  736. >(503) 494 4535          Internet: bj@ohsu.edu     AT&T Mail: attmail!ohsu3b2!bj
  737.  
  738.  
  739.   We have been trying to build this product as well.  It is clearly meant to
  740. be built with MPW and requires MPW C.  It also seems to depend on some include
  741. files that don't come with MPW or the distribution.  They are
  742. 'MacTCPCommonTypes.h', 'GetMyIPAddr.h', 'TCPPB.h', 'UDPPB.h', and
  743. 'AddressXlation.h'.  Does anyone know where to get these files?
  744. If it's legal, I would appreciate it if someone could email them to
  745. me.  Thanks.
  746.  
  747.   Scott (haney@moonshine.llnl.gov, 128.115.15.39)
  748. --
  749. - -----------------------------------------------------------------------
  750. Scott W. Haney        || Lawrence Livermore N'Lab || The above views are 
  751. haney@random.llnl.gov || P.O. Box 808;  L-644     || mine and not neces-
  752. (415) 423-6308        || Livermore, CA  94550     || sarily LLNL's.
  753.  
  754.  
  755.  
  756. - -------------------------
  757.  
  758. From: weissh@nextadm.cc.vt.edu (Hugh Weiss)
  759. Subject:  Building NCSA Telnet (2.4)
  760. Date: 29 Jan 92 13:29:10 GMT
  761. Organization: Virginia Tech Computing Center - Distributed Computing Group
  762.  
  763. In article <haney.696649626@moonshine> haney@moonshine.llnl.gov (Scott W. Haney) writes:
  764.  
  765. >>>  We have been trying to build this product [NCSA Telnet] as well.  It
  766. >>> is clearly meant to be built with MPW and requires MPW C.  It also
  767. >>> seems to depend on some include files that don't come with MPW or the 
  768. >>> distribution.  They are 'MacTCPCommonTypes.h', 'GetMyIPAddr.h',
  769. >>> 'TCPPB.h', 'UDPPB.h', and 'AddressXlation.h'.  Does anyone know where
  770. >>> to  get these files?  If it's legal, I would appreciate it if someone
  771. >>> could email them to me.  Thanks.
  772.  
  773. >>>  Scott (haney@moonshine.llnl.gov, 128.115.15.39)
  774.  
  775. They are part of the "MacTCP Developer's Kit".  Unfortunately they are
  776. licensed software (from Apple) and are not freely distributable.
  777.  
  778. -Hugh Weiss
  779. -Virginia Tech Computing Center - Distributed Computing Group
  780. -weissh@nextadm.cc.vt.edu   OR   weissh@vtcc1.cc.vt.edu
  781.  
  782.  
  783.  
  784. - -------------------------
  785.  
  786. From: haney@moonshine.llnl.gov (Scott W. Haney)
  787. Subject:  Building NCSA Telnet (2.4)
  788. Date: 29 Jan 92 01:47:06 GMT
  789.  
  790. bj@steele.ohsu.edu (Bill Jackson) writes:
  791.  
  792. >I am attempting to build the NCSA Telnet product so I can add a local
  793. >modification(s) to it.  Being a complete neophite to the Mac development
  794. >environment, I am trying to ascertain what tools I need to do this.  Is ther
  795. >a specific compiler/loader I need?  I do not see any instructions in the source
  796. >package I downloaded, maybe they assume people at this level know what they
  797. >are doing!  I see MPW mentioned - is that all I need>  If so, a specific
  798. >release, or what?
  799.  
  800. >Any help appreciated.
  801.  
  802. >-- 
  803. >---
  804. >William Jackson                     Manager, Network Services, Gaines Hall #113
  805. >Oregon Health Sciences University (OHSU), 840 SW Gaines Road, Portland,OR 97201
  806. >(503) 494 4535          Internet: bj@ohsu.edu     AT&T Mail: attmail!ohsu3b2!bj
  807.  
  808.  
  809.   We have been trying to build this product as well.  It is clearly meant to
  810. be built with MPW and requires MPW C.  It also seems to depend on some include
  811. files that don't come with MPW or the distribution.  They are
  812. 'MacTCPCommonTypes.h', 'GetMyIPAddr.h', 'TCPPB.h', 'UDPPB.h', and
  813. 'AddressXlation.h'.  Does anyone know where to get these files?
  814. If it's legal, I would appreciate it if someone could email them to
  815. me.  Thanks.
  816.  
  817.   Scott (haney@moonshine.llnl.gov, 128.115.15.39)
  818. --
  819. - -----------------------------------------------------------------------
  820. Scott W. Haney        || Lawrence Livermore N'Lab || The above views are 
  821. haney@random.llnl.gov || P.O. Box 808;  L-644     || mine and not neces-
  822. (415) 423-6308        || Livermore, CA  94550     || sarily LLNL's.
  823.  
  824.  
  825.  
  826. ---------------------------
  827.  
  828. From: wdh@well.sf.ca.us (Bill Hofmann)
  829. Subject:  GWorld and 32 bit QuickDraw question
  830. Date: 28 Jan 92 17:31:52 GMT
  831. Organization: Flashpoint
  832.  
  833. oas@eddy.cray.com (Omar Souka) writes:
  834. >Can 32 bit quickdraw run on 68000 based macs?  Specifically, can I use
  835. >GWorld calls and expect my code to run on these machines.
  836.  
  837. Yes, but only under system 7.  1-bit deep GWorlds are supported, but you
  838. still can't do color quickdraw calls (eg, "PaintCOval").
  839.  
  840. -Bill Hofmann
  841.  
  842.  
  843.  
  844. - -------------------------
  845.  
  846. From: wdh@well.sf.ca.us (Bill Hofmann)
  847. Subject:  GWorld and 32 bit QuickDraw question
  848. Date: 28 Jan 92 17:31:52 GMT
  849. Organization: Flashpoint
  850.  
  851. oas@eddy.cray.com (Omar Souka) writes:
  852. >Can 32 bit quickdraw run on 68000 based macs?  Specifically, can I use
  853. >GWorld calls and expect my code to run on these machines.
  854.  
  855. Yes, but only under system 7.  1-bit deep GWorlds are supported, but you
  856. still can't do color quickdraw calls (eg, "PaintCOval").
  857.  
  858. -Bill Hofmann
  859.  
  860.  
  861.  
  862. ---------------------------
  863.  
  864. From: wdburns@mtu.edu (WILLIAM D. BURNS)
  865. Subject: Finding out who I am on AppleTalk
  866. Date: 29 Jan 92 04:05:00 GMT
  867. Organization: Degrading Chaos, unincorporated
  868.  
  869. Greetings all,
  870.   I am attempting to write an application for a mac lab I work at and
  871. bascially I need to find out what the user name is that the user logged onto 
  872. the AppleShare server with.  I can't seem to find any clear cut info on this
  873. stuff in the IM's vols. 1-5.  Am I missing something here?
  874.  
  875. Also, I will eventually need to set this username into the Chooser's name
  876. field so that we can know who to charge for printer usage (using AppleShare's
  877. Print server thing).
  878.  
  879. I'm working primarily in Think C but any code/suggestions would be helpful!
  880.  
  881. Thanks in advance....
  882. Bill (wdburns@mtu.edu)
  883.  
  884.  
  885.  
  886. - -------------------------
  887.  
  888. From: peirce@outpost.SF-Bay.org (Michael Peirce)
  889. Subject:  Finding out who I am on AppleTalk
  890. Date: 30 Jan 92 23:15:01 GMT
  891. Organization: Peirce Software
  892.  
  893.  
  894. In article <1992Jan29.040500.330@ctr.columbia.edu> (comp.sys.mac.programmer), wdburns@mtu.edu (WILLIAM D. BURNS) writes:
  895. > Greetings all,
  896. >   I am attempting to write an application for a mac lab I work at and
  897. > bascially I need to find out what the user name is that the user logged onto 
  898. > the AppleShare server with.  I can't seem to find any clear cut info on this
  899. > stuff in the IM's vols. 1-5.  Am I missing something here?
  900. > Also, I will eventually need to set this username into the Chooser's name
  901. > field so that we can know who to charge for printer usage (using AppleShare's
  902. > Print server thing).
  903. > I'm working primarily in Think C but any code/suggestions would be helpful!
  904.  
  905. The "chooser name" is stored in string resource with ID = -16096.  You
  906. can grab it with the following line of code:
  907.  
  908.     chooserNameHandle = GetString(-16096);
  909.  
  910. where chooserNameHandle is a handle to the (pascal style) string.
  911.  
  912. The above was true before System 7, and still is to a certain extent.
  913.  
  914. With System 7 their are now two name strings: the owner name and the Macintosh
  915. name.  String -16096 is now used to identify the Mac and a new string,
  916. ID = -16413, is use used to identify the user.
  917.  
  918. Typical usage would be owner name = "Michael Peirce"
  919.                    Macintosh name = "Michael's Mac Plus"
  920.  
  921. System 7 Filesharing uses the name of the Machine as the name of the
  922. server and uses the owner name as the default login name when you
  923. connect TO a server.  
  924.  
  925. Keep in mind that user doesn't HAVE to log in to an AppleShare server
  926. using their default name.  It's easy for them to type in something
  927. else as they are mounting the volume.
  928.  
  929. I guess if you really need to set these strings you can simply update
  930. the appropriate string resources in the system file.  I'd think twice
  931. before doing this, since some users may frown on you modifying the
  932. system file behind there back.
  933.  
  934. --  Michael Peirce         --   peirce@outpost.SF-Bay.org
  935. --  Peirce Software        --   Suite 301, 719 Hibiscus Place
  936. --  Macintosh Programming  --   San Jose, California USA 95117
  937. --           & Consulting  --   voice: (408) 244-6554 fax: (408) 244-6882
  938. --                         --   AppleLink: peirce & America Online: AFC Peirce
  939.  
  940.  
  941.  
  942. - -------------------------
  943.  
  944. From: marshall@sdd.hp.com (Marshall Clow)
  945. Subject:  Re: Finding out who I am on AppleTalk
  946. Date: 31 Jan 92 16:51:56 GMT
  947. Organization: Hewlett Packard Color Imaging Division
  948.  
  949. >> In article <1992Jan29.040500.330@ctr.columbia.edu>, wdburns@mtu.edu (WILLIAM D. BURNS) writes:
  950. >>   I am attempting to write an application for a mac lab I work at and
  951. >> bascially I need to find out what the user name is that the user logged onto 
  952. >> the AppleShare server with.  I can't seem to find any clear cut info on this
  953. >> stuff in the IM's vols. 1-5.  Am I missing something here?
  954.  
  955. > and Micheal Peirce replies: 
  956. > The "chooser name" is stored in string resource with ID = -16096.  You
  957. > can grab it with the following line of code:
  958. >     chooserNameHandle = GetString(-16096);
  959. > where chooserNameHandle is a handle to the (pascal style) string.
  960. > The above was true before System 7, and still is to a certain extent.
  961. > With System 7 their are now two name strings: the owner name and the Macintosh
  962. > name.  String -16096 is now used to identify the Mac and a new string,
  963. > ID = -16413, is use used to identify the user.
  964. > Typical usage would be owner name = "Michael Peirce"
  965. >                    Macintosh name = "Michael's Mac Plus"
  966. > [ good comment about relationship between user name and login id deleted ]
  967.  
  968. Micheal, this is the kind of post I've come to expect from you.
  969. Concise and accurate, and totally lacking in "Well, I'm not
  970. sure but this seems to work for me..." Thank you. The only addition or
  971. suggestion I have is to be sure that the resource comes from the system
  972. file; i.e:
  973.  
  974.      short saveResFile;
  975.      StringHandle chooserNameHandle;
  976.  
  977.      saveResFile = CurResFile ();
  978.      UseResFile ( 0 );   /* 0 means system file */
  979.      chooserNameHandle = GetString(-16096);
  980.      UseResFile ( saveResFile );
  981.  
  982. P.S.    Nice job on the book!
  983.  
  984. Marshall Clow
  985. Hewlett Packard
  986. San Diego Printer Division
  987. marshall@sdd.hp.com
  988.  
  989.  
  990.  
  991. - -------------------------
  992.  
  993. From: wdburns@mtu.edu (WILLIAM D. BURNS)
  994. Subject: Finding out who I am on AppleTalk
  995. Date: 29 Jan 92 04:05:00 GMT
  996. Organization: Degrading Chaos, unincorporated
  997.  
  998. Greetings all,
  999.   I am attempting to write an application for a mac lab I work at and
  1000. bascially I need to find out what the user name is that the user logged onto 
  1001. the AppleShare server with.  I can't seem to find any clear cut info on this
  1002. stuff in the IM's vols. 1-5.  Am I missing something here?
  1003.  
  1004. Also, I will eventually need to set this username into the Chooser's name
  1005. field so that we can know who to charge for printer usage (using AppleShare's
  1006. Print server thing).
  1007.  
  1008. I'm working primarily in Think C but any code/suggestions would be helpful!
  1009.  
  1010. Thanks in advance....
  1011. Bill (wdburns@mtu.edu)
  1012.  
  1013.  
  1014.  
  1015. ---------------------------
  1016.  
  1017. From: 881571s@aucs.acadiau.ca (Arnold Spence)
  1018. Subject: MacApp vs. TCL (think pascal) pros and cons?
  1019. Date: 4 Feb 92 17:40:48 GMT
  1020. Organization: Acadia University
  1021.  
  1022. Can anyone BRIEFLY make some points about the advantages or disadvantages of
  1023. using Think Pascal's TCL 1.1 instead of MacApp 2.0. Is one easier to use than
  1024. the other or does one have certain advantages where portability may be a concern 
  1025. if end_of_message then
  1026.   writeln('Arnold B. Spence : 881571s@aucs.acadiau.ca');
  1027.  
  1028.  
  1029.  
  1030. - -------------------------
  1031.  
  1032. From: ksand@apple.com (Kent Sandvik)
  1033. Subject:  MacApp vs. TCL (think pascal) pros and cons?
  1034. Date: 6 Feb 92 22:53:26 GMT
  1035. Organization: MacDTS Mongols
  1036.  
  1037. In article <881571s.697225248@aucs>, 881571s@aucs.acadiau.ca (Arnold Spence) writes:
  1038.  
  1039. > Can anyone BRIEFLY make some points about the advantages or disadvantages of
  1040. > using Think Pascal's TCL 1.1 instead of MacApp 2.0. Is one easier to use than
  1041. > the other or does one have certain advantages where portability may be a concern 
  1042.  
  1043. I think they compensate each other quite well. MacApp has nice features for 
  1044. huge scale applications concerning the view handling and MacApp 3.0 features
  1045. (Adorners, Behaviors, DrawingEnvironment, Dependency mechanism and so on),
  1046. while TCL could be compiled and used with most small scale Macintosh machines.
  1047.  
  1048. As for portability, MacApp is designed and engineered for portability, and I'm
  1049. sure TCL is also portable. It's more of a question of 
  1050.  
  1051. a) large scale development where the features of MacApp pays off
  1052. b) size of system where the development work is done, here TCL certainly is 
  1053.    the viable alternative
  1054.  
  1055. Kent Sandvik
  1056. - --
  1057. private opinions - hey, any program written for the Mac is a good thing, despite
  1058. the framework/tools used.
  1059.  
  1060.  
  1061.  
  1062. - -------------------------
  1063.  
  1064. Organization: Queen's University at Kingston
  1065. Date: Monday, 10 Feb 1992 23:58:58 EST
  1066. From: <CHARLESW@QUCDN.QueensU.CA>
  1067. Subject:  MacApp vs. TCL (think pascal) pros and cons?
  1068.  
  1069. 1)  I think that TCL is easier to learn (it's smaller).  However, I'd already
  1070.     dug into MacApp (before the book by Larry Rosenstein, David Wilson, and
  1071.     Shafer).
  1072.  
  1073. 2)  MacApp is much more comprehensive.
  1074.  
  1075. 3)  Apple has changed from doing MacApp in Object Pascal to C++ without a lot
  1076.     of consultation (a sort of "Presto!  Here it is!  Waddaya think?").  That
  1077.     sort of change worries me about the stability of the product (now that it
  1078.     is that basis for many programs, unlike the days when it was half product
  1079.     half research).  If I were Symantec/Think ("if I were an entire company",
  1080.     I know) I would be reluctant to continue support for MacApp.
  1081.  
  1082. 4)  MacApp compile-cycles can be a lot longer, particularly if you are using
  1083.     MPW.  I imagine that Jasik's incremental build system (I forget the name
  1084.     right now) would help.  **Note that I haven't worked with MacApp/MPW for
  1085.     over a year now.
  1086.  
  1087. 5)  There is probably a larger community of people using TCL (the C and Pascal
  1088.     versions appear to be identical, particularly if you look at things like
  1089.     the use of brackets in the Pascal version).  However, given the light
  1090.     traffic on the net about it, I could well be making a bad assumption here.
  1091.  
  1092.   Whichever you choose, consider using AppMaker (Bowers Development) as a
  1093. learning tool.  You can create programs that have the appearance, even the
  1094. basic functions, that you want and then trace through them seeing how your
  1095. chosen object-library works.  It's inexpensive, it works, the code is reason-
  1096. able, and I've found the company very responsive.
  1097.  
  1098. .../dave    Dave Charlesworth
  1099.  
  1100.  
  1101.  
  1102. - -------------------------
  1103.  
  1104. From: mcmath@csb1.nlm.nih.gov (Chuck McMath)
  1105. Subject:  MacApp vs. TCL (think pascal) pros and cons?
  1106. Date: 11 Feb 92 13:24:15 GMT
  1107. Organization: MSD
  1108.  
  1109. I just had a few comments about what Dave Charlesworth had to say regarding TCL & MacApp:
  1110.  
  1111. In article <92041.235858CHARLESW@QUCDN.QueensU.CA>, CHARLESW@QUCDN.QueensU.CA writes:
  1112. > 1)  I think that TCL is easier to learn (it's smaller).  However, I'd already
  1113. >     dug into MacApp (before the book by Larry Rosenstein, David Wilson, and
  1114. >     Shafer).
  1115.  
  1116.     TCL is smaller, but that doesn't make it easier to learn.  I believe one's as easy to
  1117. learn as the other, mainly because neither has good tutorial/documentation.  However, you will
  1118. find MUCH more written about MacApp (Addison Wesley books, for example) than you will about
  1119. TCL. And the developer CD-ROMS contain scads of stuff about MacApp.  Unfortunately, most of 
  1120. what's written is about MacApp 2.0, not 3.0.
  1121.  
  1122. > 2)  MacApp is much more comprehensive.
  1123.  
  1124.     Agreed.
  1125. > 3)  Apple has changed from doing MacApp in Object Pascal to C++ without a lot
  1126. >     of consultation (a sort of "Presto!  Here it is!  Waddaya think?").  That
  1127. >     sort of change worries me about the stability of the product (now that it
  1128. >     is that basis for many programs, unlike the days when it was half product
  1129. >     half research).  If I were Symantec/Think ("if I were an entire company",
  1130. >     I know) I would be reluctant to continue support for MacApp.
  1131.  
  1132.    Well, Apple made plans, and announced their intentions on AppleLink BEFORE the rewrite was
  1133. out (but seemingly after the decision was final).  The resulting flames within the MacApp 
  1134. community burned hot and long - there was a lot of discussion and arguments and flaming for 
  1135. approximately 3-4 weeks.  GE (who runs AppleLink) ran a big profit in that period :).
  1136.  
  1137.    The rewriting of MacApp probably didn't affect the stability of the product as much as
  1138. the introduction of stuff such as support for the Balloon Manager, Publish/Subscribe, Apple
  1139. Events, etc, etc.  Each 'major' revision of MacApp (1.0 -> 2.0, and 2.0 -> 3.0) has involved
  1140. a BIG rewrite job, with MAJOR structural code changes to the class hierarchies.  Does this
  1141. introduce bugs?  Naturally.  The programmers at Apple are good, but they're not gods (except
  1142. for Keith Rollin, probably!).  Note that if you think MacApp 3.0 is not stable enough, you can
  1143. keep using 2.0 with no penalty.  In fact, many developers that are in the late stages of products
  1144. using 2.0 will not convert to 3.0 because it isn't worth it.  However, for new projects, 3.0
  1145. is the only way to go.
  1146.  
  1147.    Should Symantec continue to support MacApp?  Well, if they came out with a C compiler that
  1148. handles it, I wouldn't be surprised if 60-70% of the people using MacApp and C++ switched to
  1149. it.  Will they support MacApp?  That's a business decision.  Symantec will ALWAYS be behind
  1150. Apple in its MacApp support, simply because Apple creates the code first.  That doesn't mean
  1151. that Symantec is out in the cold.  If I were Symantec, I would bust my butt to get a C compiler
  1152. out.  It would be a winner.
  1153.  
  1154. > 4)  MacApp compile-cycles can be a lot longer, particularly if you are using
  1155. >     MPW.  I imagine that Jasik's incremental build system (I forget the name
  1156. >     right now) would help.  **Note that I haven't worked with MacApp/MPW for
  1157. >     over a year now.
  1158.  
  1159.    Compile cycles under MPW are very slow unless you have an fx or better.  Did I say very slow?
  1160. No, I mean really really slow.  On a IIx it's like watching a glacier melt.  You need 8 MB of
  1161. RAM at a minimum, since the CFront tool is a hog.  There is discussion about the development
  1162. cycle and its long duration.  At the MacApp conference this month in Orlando there's going
  1163. to be some session (I believe - maybe just an informal one) on improving your turnaround times.
  1164. Will it get better?  Yes.  Apple has stated in their 'Apple Direct' magazine sent to developers
  1165. that one of the things they are working on in 1992 is incremental compiling.  Will it be
  1166. as good as the Think compilers?  Probably not.  Will it make more people happy?  Probably.
  1167.  
  1168. > 5)  There is probably a larger community of people using TCL (the C and Pascal
  1169. >     versions appear to be identical, particularly if you look at things like
  1170. >     the use of brackets in the Pascal version).  However, given the light
  1171. >     traffic on the net about it, I could well be making a bad assumption here.
  1172.  
  1173.     I am on MacApp.Tech$ on AppleLink and on the ThinkC mailing list.  IMHO, there is more
  1174. activity on MacApp.Tech$.  However, I bet there are a lot of people at universities and at
  1175. home who are playing with (no insult intended) TCL.  I have yet to hear of any published
  1176. product created using TCL (doesn't mean one doesn't exist, I just haven't heard of one.  Note
  1177. that when MacApp came out, you didn't see any products made using MacApp intil at LEAST a
  1178. year after the release).
  1179.  
  1180. >   Whichever you choose, consider using AppMaker (Bowers Development) as a
  1181. > learning tool.  You can create programs that have the appearance, even the
  1182. > basic functions, that you want and then trace through them seeing how your
  1183. > chosen object-library works.  It's inexpensive, it works, the code is reason-
  1184. > able, and I've found the company very responsive.
  1185.  
  1186.    I'm not familiar with AppMaker (it's on order).  There is a tool for MacApp that has been
  1187. warmly described also: IcePick.  It's available from the MacApp Developers Association, and
  1188. it allows you to create your views and simulate them (better than ViewEdit).  No experience with
  1189. that either outside of reading glowing reviews.
  1190.  
  1191. > .../dave    Dave Charlesworth
  1192.  
  1193.    The conclusion:  use TCL.  use MacApp.  use whatever you want.  use whatever you have the
  1194. bucks to buy.  I use MacApp and I love it.  It's not perfect, but the folks working on it seem
  1195. to have the desire to make it better and better, and I can't ask for more.
  1196.  
  1197.                        --chuck mcmath-
  1198.                     mcmath@csb1.nlm.nih.gov
  1199.   MSD, Inc. * National Library of Medicine * National Institutes of Health
  1200.                        Bethesda, MD 20894
  1201.  
  1202.  
  1203.  
  1204. - -------------------------
  1205.  
  1206. From: k044477@hobbes.kzoo.edu (Jamie R. McCarthy)
  1207. Subject:  MacApp vs. TCL (think pascal) pros and cons?
  1208. Organization: Kalamazoo College
  1209. Date: Tue, 11 Feb 1992 15:19:03 GMT
  1210.  
  1211. In article <1992Feb11.132415.1878@nlm.nih.gov> mcmath@csb1.nlm.nih.gov (Chuck McMath) writes:
  1212. >I just had a few comments ... regarding TCL & MacApp:
  1213. > [70 lines deleted]
  1214. >I have yet to hear of any published
  1215. >product created using TCL (doesn't mean one doesn't exist,
  1216. >I just haven't heard of one. )
  1217.  
  1218. Mine was.  Released last December.  Now you've heard of one.
  1219. -- 
  1220.  Jamie McCarthy     Internet: k044477@kzoo.edu     AppleLink: j.mccarthy
  1221.  Kzoo randomly kills all my mail;  if I don't acknowledge, try resending.    
  1222.  
  1223.  
  1224.  
  1225. - -------------------------
  1226.  
  1227. From: haynes@mace.cc.purdue.edu (Carl W. Haynes III)
  1228. Subject:  MacApp vs. TCL (think pascal) pros and cons?
  1229. Date: 11 Feb 92 15:58:17 GMT
  1230. Organization: Purdue University Computing Center
  1231.  
  1232. In article <1992Feb11.151903.2513@hobbes.kzoo.edu> k044477@hobbes.kzoo.edu (Jamie R. McCarthy) writes:
  1233. >>I have yet to hear of any published
  1234. >>product created using TCL (doesn't mean one doesn't exist,
  1235. >>I just haven't heard of one. )
  1236. >
  1237. >Mine was.  Released last December.  Now you've heard of one.
  1238.  
  1239. Also, Lotus 123/Mac was reportedly written with the TCL
  1240.  
  1241. carl 
  1242. haynes@mace.cc.purdue.edu
  1243. AOL:CWH3
  1244.  
  1245.  
  1246.  
  1247. - -------------------------
  1248.  
  1249. Organization: Queen's University at Kingston
  1250. Date: Wednesday, 12 Feb 1992 23:52:13 EST
  1251. From: <CHARLESW@QUCDN.QueensU.CA>
  1252. Subject:  MacApp vs. TCL (think pascal) pros and cons?
  1253.  
  1254.   This is a quick response to Chuck McMath's useful followup to my note.
  1255.  
  1256. > TCL is smaller, but that doesn't make it easier to learn.
  1257.  
  1258. Smaller was, perhaps, a poor choice of words on my part.  By "smaller" I meant
  1259. "simpler".  You only had to learn three concepts to use TCL 1.0.  MacApp had
  1260. nifty things like command objects, that while powerful and useful, muddied the
  1261. waters for me while I was trying to develop a basic working knowledge.  Now
  1262. TCL 1.1 has added a few things, but it is still a simpler framework I think.
  1263. The sword cuts both ways of course, but it's something for someone to consider
  1264. when choosing a framework.  If you're writing company-specific tools for
  1265. internal use by a relatively small number of people (i.e. your constraints are
  1266. well understood and your support channel is good), as I am, then I think that
  1267. TCL + AppMaker is a winner for getting something out quickly.
  1268.  
  1269. > stability
  1270.  
  1271. Another poorly chosen word on my part.  I didn't mean that the code was
  1272. unstable, I meant that if you were basing your work on MacApp in Object Pascal,
  1273. all of a sudden they were talking a complete shift to C++.  Regardless of the
  1274. merits of the two languages, as a business issue it meant a big migration to
  1275. turn your application into a System-7 Savvy app.  You alluded to this with
  1276. your comment:
  1277.  
  1278. > Each 'major' revision of MacApp (1.0 -> 2.0, and 2.0 -> 3.0)
  1279. > has involved a BIG rewrite job, with MAJOR structural code
  1280. > changes to the class hierarchies.
  1281.  
  1282. Both of these revisions have indeed required major rewrites for MacApp custom-
  1283. ers as well.  This will be true for major revisions to TCL should they appear.
  1284. It points to a larger problem with advancing a framework without orphaning your
  1285. customers.  My feeling at the time, though, was that the implications for
  1286. business users of MacApp weren't given as much weight as they should have been.
  1287. (That is surely debatable though.)  That part is history now, but it should be
  1288. a factor for someone developing something that will be long-lived and broadly
  1289. distributed.
  1290.  
  1291. > Should Symantec continue to support MacApp?
  1292.  
  1293. I was thinking of the Pascal group in particular.  They invested what must have
  1294. been a monumental amount of effort in changing Think Pascal to support MacApp.
  1295. Shortly after that version was released, blam, MacApp wasn't Pascal-based any
  1296. more.  These guys weren't working in the dark (they had to be in constant touch
  1297. with Apple to keep up with some of the MPW Pascal dependencies being introduced
  1298. into MacApp anyway).  When they heard the announcement of the change, their
  1299. hearts must have just dropped.  They'd made a major financial commitment to
  1300. MacApp and it appeared that it was given no significant weight.
  1301.  
  1302. > I have yet to hear of any published product created using TCL
  1303.  
  1304. A lot of programming is done for applications that are never published in the
  1305. traditional sense.  I think that TCL is a good candidate for many of these.
  1306.  
  1307. > The conclusion:  use TCL.  use MacApp.  use whatever you want.
  1308. > use whatever you have the bucks to buy.
  1309.  
  1310. You're right.  They are both good products.  They are both useful.  I hope
  1311. this discussion makes it easier for someone to choose, and encourages people
  1312. to start using them.  I believe that using either one will make it easier to
  1313. move to the other should you find that the first one doesn't suit your needs.
  1314.  
  1315.   Cheers,
  1316.  
  1317. .../dave   Dave Charlesworth
  1318.  
  1319.  
  1320.  
  1321. - -------------------------
  1322.  
  1323. From: d88-jwa@hemul.nada.kth.se (Jon W{tte)
  1324. Subject:  MacApp vs. TCL (think pascal) pros and cons?
  1325. Date: 13 Feb 92 18:41:44 GMT
  1326. Organization: Royal Institute of Technology, Stockholm, Sweden
  1327.  
  1328. .CA> CHARLESW@QUCDN.QueensU.CA writes:
  1329.  
  1330.    > stability
  1331.  
  1332.    unstable, I meant that if you were basing your work on MacApp in Object Pascal,
  1333.    all of a sudden they were talking a complete shift to C++.  Regardless of the
  1334.  
  1335. This is not true. MacApp is completely written in C++, yes, but you don't
  1336. have to use C++, you can use Object Pascal, since the MacApp writers have
  1337. stayed clear of constructs not supported by Object Pascal. Much to the
  1338. chagrin of us C++ developers, of course ;-)
  1339.  
  1340. --
  1341. This Signature is distributed under the conditions of the Signature License,
  1342. available at a fee from   h+@nada.kth.se  (Jon W{tte)  Reading the Signature
  1343. implies that you accept to be bound by the terms in said License. Should you
  1344. not agree on any of these terms, you must return the Signature unread to me.
  1345.  
  1346.  
  1347.  
  1348. - -------------------------
  1349.  
  1350. From: CHARLESW@QUCDN.QueensU.CA
  1351. Subject:  MacApp vs. TCL (think pascal) pros and cons?
  1352. Date: 14 Feb 92 17:12:00 GMT
  1353. Organization: Queen's University at Kingston
  1354.  
  1355. > This is not true.
  1356.  
  1357. I think that's a little strong.  My point in this discussion is that if you
  1358. were developing in Object Pascal with MacApp you suddenly had a series of
  1359. issues to deal with about your tools instead of your "real problem"
  1360. (whatever that happened to be).  For example, a working knowledge of the
  1361. MacApp source code is still required.  If you were using Think Pascal you
  1362. were looking at learning time for people to switch to MPW.  Those are just
  1363. a couple of examples.  (Not to mention the case if you were a language
  1364. developer who had to recoup an investment in making your compiler MacApp-
  1365. compatible; a developer that Apple would want to keep on its side.) It
  1366. meant a slowdown when you already had to deal with the new class structure,
  1367. and I don't feel that it was necessary (particularly if they're not using
  1368. the features of C++).
  1369.  
  1370. In summary, I wasn't saying that it wasn't technically possible to convert,
  1371. just that it introduced more overhead, and it appears that at the time the
  1372. announcement was made, it hadn't been taken into consideration.  (I believe
  1373. that _after_ the announcement, this and other issues were well aired by
  1374. people such as Kurt Schmucker. However, it seemed to be a 'fait accompli'
  1375. by that point.)  I think that the fact that a significant change like this
  1376. hadn't been fully considered is a factor that people should consider in
  1377. choosing how they will develop their applications.  (I'm certainly not out
  1378. to condemn MacApp or the people that have brought it this far.  I know that
  1379. people like Harvey Alcabes, Steve Burbeck, and Carl Nelson had to put in
  1380. all kinds of effort to keep a great idea alive and moving forward.  I
  1381. think, though, that enthusiasm for the possibilities drove this decision,
  1382. without a review of the different climates that some MacApp users live in.
  1383. This was a major change, and I think more time and discussion would have
  1384. helped.)
  1385.  
  1386. Best wishes.
  1387.  
  1388. .../dave    Dave Charlesworth
  1389.  
  1390.  
  1391.  
  1392. ---------------------------
  1393.  
  1394. From: gil@unix.SRI.COM (Gil Porat)
  1395. Subject: Accessing PC files from a Mac
  1396. Date: 12 Feb 92 17:25:00 GMT
  1397. Organization: SRI International, Menlo Park, CA
  1398.  
  1399. I'd appreciate any pointers with the following question.
  1400.  
  1401. I need to write a Mac application that accesses a data file on a PC (DOS)
  1402. via a network.  
  1403.  
  1404. Is this possible, and if so how?
  1405.  
  1406. What pieces of hardware and software are needed for such a network?
  1407. Are there toolkits that would facilitate accessing the PC file from the Mac?
  1408.  
  1409. Any help would be appreciated.
  1410.  
  1411. -Gil Porat
  1412. gil@ginger.sri.com
  1413.  
  1414.  
  1415.  
  1416. - -------------------------
  1417.  
  1418. From: mxmora@unix.SRI.COM (Matt Mora)
  1419. Subject:  Accessing PC files from a Mac
  1420. Date: 14 Feb 92 01:05:46 GMT
  1421. Organization: SRI International, Menlo Park, CA
  1422.  
  1423. In article <32436@unix.SRI.COM> gil@sri-unix.sri.com (Gil Porat) writes:
  1424. >I'd appreciate any pointers with the following question.
  1425. >
  1426. >I need to write a Mac application that accesses a data file on a PC (DOS)
  1427. >via a network.  
  1428. >
  1429. >Is this possible, and if so how?
  1430.  
  1431. You might want to install an appletalk card on the pc so at least the
  1432. two machines will have a common denominator.
  1433.  
  1434. >What pieces of hardware and software are needed for such a network?
  1435. >Are there toolkits that would facilitate accessing the PC file from the Mac?
  1436.  
  1437. After you have the appletalk network then you might be able to try
  1438. sending files via ADSP. (apple data stream protocol). 
  1439. Michael Pierce has a book on programming using appletalk which would
  1440. probably be a big help.
  1441.  
  1442. Matt
  1443.  
  1444. -- 
  1445. ___________________________________________________________
  1446. Matthew Mora                |   my Mac  Matt_Mora@sri.com
  1447. SRI International           |  my unix  mxmora@unix.sri.com
  1448. ___________________________________________________________
  1449.  
  1450.  
  1451.  
  1452. ---------------------------
  1453.  
  1454. From: lapoint@adm.brl.mil (Claude Lapointe)
  1455. Subject: HELP!! mistakenly trashed folder
  1456. Date: 12 Feb 92 18:56:27 GMT
  1457. Organization: Ballistic Research Lab (BRL), APG, MD.
  1458.  
  1459. I have inadvertantly trashed a folder containing about 8 files,
  1460. 2 of which I would like to recover because their last backup was
  1461. Jan 9.  The files are data files for Dollars & $ense version 4.1c.
  1462. One is about 865K, the other about 810K. The disk partition on
  1463. which the folder existed has not been written to since the
  1464. trashing. The folder was in a silverlining version 5.23/08
  1465. partition on a Cirrus 40-Q disk, and had been moved to the
  1466. desktop immediately before being trashed.
  1467.  
  1468. getinfo:   Norton Utilities 1.1.2
  1469.  
  1470. macenvy:   memory:        4096K
  1471.            processor:     motorola 68000
  1472.            rom:           128K rev.2 (Lonely Heifer)
  1473.            system:        6.0.7
  1474.            finder:        6.1.7
  1475.            multifinder:   not active
  1476.            SysEnvirons:   version 2 available
  1477.  
  1478. I had just gotten my copy of Norton Utilities so FileSaver was not
  1479. installed.
  1480.  
  1481. Quick unerase found 13 files which, based on their names, I
  1482. know to be irrelevant.
  1483.  
  1484. Unerase by file type, Dollars & $ense 4.0 (note my files are 4.1c),
  1485. no advanced options found no files. Selecting exhaustive search
  1486. found no files. Selecting unknown file fragments found 36 files.
  1487. Only one was of approximately the right size. With its type and
  1488. creator changed to EAGD, EAGP respectively, it produced error 23,
  1489. incompatible file structure when I attempted to open it under
  1490. Dollars & $ense 4.1c.
  1491.  
  1492. Unerase by text string found 66 files, each of size 5K. The string
  1493. was "college", unique to the 2 files desired.
  1494.  
  1495. In addition to using Norton Utilities, I have looked at the disk
  1496. partition with CE Software's MacTools v6.2 ViewEdit, but could
  1497. make no use of the information displayed, although there were
  1498. many recognizable string fragments.
  1499.  
  1500. I have access to ResEdit, although I have never used it.
  1501.  
  1502. Currently, I am not using desktopmgr (unless it is built into
  1503. system 6.0.7), but I do still have files
  1504.  
  1505.              desktop DB  last modified 1/26
  1506.              desktop DF  last modified 1/4
  1507.  
  1508. on which dates I was running system 6.0.4 with desktopmgr.
  1509.  
  1510. Thanks in advance
  1511.  
  1512.  
  1513.  
  1514. - -------------------------
  1515.  
  1516. From: marvin@norton.com (Marvin Carlberg)
  1517. Subject:  HELP!! mistakenly trashed folder
  1518. Date: 15 Feb 92 07:15:35 GMT
  1519. Organization: Symantec / Peter Norton
  1520.  
  1521. As you have discovered, the file format for Dollars and Sense 4.1c is
  1522. slightly different from version 4.0 which Norton Utilities can recover.
  1523. We can create a new UnErase Signature for the 4.1C files with ResEdit,
  1524. but it is probably easier to do so over the phone than email, so if you
  1525. can, call Symantec technical support on Tuesday (closed Monday) at
  1526. 310-449-4990.  We can try to do it thru email too if you'd rather.
  1527.  
  1528. -Marvin Carlberg
  1529.  Symantec / Peter Norton Group
  1530.  marvin@norton.com
  1531.  
  1532.  
  1533.  
  1534. ---------------------------
  1535.  
  1536. End of C.S.M.P. Digest
  1537. **********************
  1538.